package com.cgmnx.admin.common.util;

import com.google.common.collect.Maps;
import com.typesafe.config.Config;
import com.typesafe.config.ConfigFactory;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

import java.util.Map;

/**
 * 读取配置文件的工具类
 */
@Slf4j
public final class ConfigurationUtil {

    /***
     * 缓存map,默认使用lazy load的模式  key:配置文件 value: 配置信息
     */
    private final static Map<String, Config> cachedConfigMap = Maps.newHashMap();

    /***
     * 获取一个配置
     * 查看缓存是否加载，如果没有加载就执行加载逻辑
     *
     * @param configFileName 放在config目录下的文件名，不包含后缀
     * @return
     */
    public static synchronized Config getConfig(String configFileName) {

        if (StringUtils.isBlank(configFileName)) {
            return null;
        }

        Config config = cachedConfigMap.get(configFileName);
        if (config != null) {
            return config;
        }
        config = ConfigFactory.load(configFileName);

        if (config != null) {
            cachedConfigMap.put(configFileName, config);
        }

        log.info("读取配置文件:{}", JacksonMapper.encodeQuietly(config));

        return config;
    }

}
